實際開始使用 Git 之後,會執行到的指令幾乎是大同小異,不外乎 git status
、git add
、git commit -m
等指令不斷的重複。
雖然這些指令都不算太長,不過在輸入指令的過程,無形之中是會浪費不少打字時間的。
這邊呼籲 GUI 派的讀者,不要在看到這句話之後趁機推坑,不然會讓指令派的讀者過得太舒服!!
如果有辦法少打幾個字,那麼 打指令時會產生一種快感 將會在不知不覺中省下不少時間!
為指令派的讀者獻上此系列文最後的溫柔:
設定指令縮寫
分別介紹一下「設定縮寫」、「查看縮寫」、「刪除縮寫」三個指令:
使用這個指令,就可以在設定檔中新增指令的縮寫:
git config --global alias.[想要縮寫的名稱] [原本的指令]
例如:
git config --global alias.st status
表示要讓 git st
指令等同於 git status
的效果。
注意這個行為並不是「取代」,只是設定「縮寫」,所以 git st
與 git status
兩個指令都可以在你的 Git 專案起作用。
要查看自己設定了哪些縮寫的話,可以這樣下指令查詢:
git config --get-regexp alias
當發現有些縮寫設定後卻都用不到,可以使用這個指令把縮寫移除:
git config --global --unset alias.[縮寫名稱]
介紹一下筆者自己有設定,也推薦可以使用的縮寫
git config --global alias.st status
執行完後,未來執行 git status
,只需要輸入下列指令,就能代表相同的意思
git st
查看 log 的文章有提到 git log
常搭配的參數,例如 --oneline
、--graph
,如果設定成縮寫就會方便很多:
git config --global alias.l "log --oneline --graph"
之後只要執行縮寫指令,就能達到完整指令的效果:
git l
此外,還有那串幾乎不太可能直接輸入使用的 format 指令,也可以設定縮寫:
git config --global alias.ls "log --oneline --graph --pretty=format:'%C(yellow)%h%Creset - %C(cyan)<%an>%Creset %s %C(magenta)(%ar)%Creset'"
打完之後就可以用這個指令呈現整齊的 log 資訊:
git ls
註:
-n
(n
為自然數 ),是git log
原本就能用的參數,是讓git log
呈現特定筆數的參數。
git add
指令沒什麼好縮寫的,這裡設定的是「將檔案移出暫存區」指令。
當時還不知道 git reset
也能將檔案移出暫存區,一直覺得 git restore --staged
指令不好打,於是設定了這個縮寫:
git config --global alias.rmadd "restore --staged"
commit
系列算是很常用的指令,介紹一下筆者有設定的縮寫。
git commit
本身的縮寫
git config --global alias.cm commit
提交版本時會用到的縮寫
git config --global alias.cmm "commit -m"
命名概念很單純,就是 commit
+ -m
= cmm
。
這個指令設定完之後,提交版本時就不用多打 -m
參數了:
git cmm "版本標題訊息"
一次提交所有異動檔案的縮寫:
git config --global alias.cmam "commit -am"
要「修正上一個版本提交的訊息」會用到的指令,也設定一個縮寫:
git config --global alias.cmrn "commit --amend -m"
概念是 commit rename 的簡稱:cmrn
。
單純的加一些資料到最近的版本指令也是頗長,使用縮寫會方便很多:
git config --global alias.cmcm "commit --amend --no-edit"
筆者的命名概念是 「兩個 commit」 ,使用了 cmcm
當作這個指令的簡稱。
再來是分支系列的縮寫
git branch
本身的縮寫:
git config --global alias.br branch
重新命名目前分支指令的縮寫:
git config --global alias.brm "branch -m"
刪除分支的指令縮寫:
git config --global alias.brd "branch -d"
強制建立分支指令縮寫:
git config --global alias.brf "branch -f"
切換分支的縮寫:
git config --global alias.co checkout
建立並且切換分支的縮寫:
git config --global alias.cob "checkout -b"
在 Git 初始化設定 文章中,常見問題「第四題」曾經提到過,git config --global
指令是用來更改 .gitconfig
檔案的指令。
既然我們是用它來設定縮寫,代表我們可以直接去 .gitconfig
檔案編輯縮寫。
如果你沒操作過這個檔案的話,可以到下列的路徑開啟檔案:
Mac
: ~/.gitconfig
Windows
: C:\Users\你的使用者名字\.gitconfig
接著請找到 [alias] 區塊,就可以看到剛剛設定縮寫的資料,如果沒有設定過任何縮寫,可以「手動新增」[alias] 區塊
這裡提供所有筆者設定資訊給大家參考,需要的話可以複製回去更改成習慣的設定:
[alias]
# status
st = status
#log
l = log --oneline --graph # 顯示log
ls = log --oneline --graph --pretty=format:'%C(yellow)%h%Creset - %C(cyan)<%an>%Creset %s %C(magenta)(%ar)%Creset' # 格式化log
rl = reflog --pretty=format:'%C(yellow)%h%Creset %C(red)%gd%Creset %C(cyan)<%an>%Creset %C(auto)%s%C(reset) %C(magenta)(%cr)%C(reset)' # 格式化reflog
# add
all = add .
rmadd = restore --staged # 取消add
# commit
cm = commit # commit
cmm = commit -m # commit message
cmam = commit -am # 一次整合add跟commit
cmcm = commit --amend --no-edit
cmrn = commit --amend -m # 重新更改最近一次的commit訊息
cmempty = commit --allow-empty -m --no-edit # 建立一個空的commit
# branch
br = branch # 顯示所有branch
brv = branch -v # 顯示所有branch的最後一次commit
brm = branch -m # 重新命名branch
brd = branch -d # 刪除 branch
brf = branch -f # 強制建立分支
# checkout
co = checkout # 切換分支
cob = checkout -b # 建立並切換分支
# reset
rst = reset # 取消add
rsth = reset --hard # reset hard 模式
rsthp = reset --hard HEAD^ # 回到上一個commit --hard
rstp = reset HEAD^ # 回到上一個commit --mixed
rsto = reset --hard ORIG_HEAD
#rebase
rb = rebase # rebase
rbi = rebase -i # 互動式rebase
rbc = rebase --continue # 繼續rebase
# 遠端相關
fetchp = fetch --prune # 取得遠端所有資料並刪除已經不存在的branch
bra = branch -a # 顯示所有branch
psd = push origin -d # 刪除遠端branch
psf = push -f # 強制push
pso = push -u origin # 建立遠端branch
getalias = config --get-regexp alias # 取得所有alias
git config --global user.email
git config --global user.name 使用者名稱
git config core.editor
git config --global core.editor 程式名稱
git config --global core.editor "code --wait"
詳細資訊可參考 GitHub 官方文件
git init
git add .
git add 檔案名稱
git commit -m "版本訊息"
git commit --am "版本訊息"
git commit -a -m "版本訊息"
git status
git log
git restore --staged 檔案名稱
git restore 檔案名稱
git commit --amend -m "訊息"
git commit --amend
.gitignore
排除檔案.gitignore
檔案git reset commitID
git reset --soft commitID
git reset --hard commitID
git rebase commitID
git rebase -i commitID
git revert HEAD
git branch
git branch 分支名稱
git checkout -b 分支名稱 # 切換並建立新分支
git branch -f 分支名稱
git checkout 分支名稱
git branch -d 分支名稱
git branch -D 分支名稱
git merge 要被合併的分支名稱
git merge --abort
git remote add 遠端的名稱 遠端網址
git push -u 遠端名稱 地端分支:遠端分支
git clone 遠端網址
git pull
git push 遠端名稱 --delete 遠端分支名稱
git push 遠端名稱 -d 遠端分支名稱
git push 遠端名稱 :遠端分支名稱
git fetch
git fetch --prune